In the abstract, every piece of software is based on a model of a piece of reality. The model defines the data that the software manipulates, as well as rules for manipulation. Often, the model is implicitly buried in the code of an application, and a new piece of software has to be developed for a different model.
That being said, a certain kind of software is built around a runtime framework designed to interpret or execute explicit instances of models. Such “model-centric” software typically will include tooling to create models for the runtime framework. Thus, in effect, the model tooling is used to develop applications. The definition of what models can be made and executed (i.e., a model for the model) has traditionally been referred to as the metamodel for the tooling and model framework.
Model-centric software typically will target either general purpose application development or development within a more specific domain. In some cases, the software supports enhancements to a standard application through the addition and/or modification of a corresponding model. For example, enhancements might be made directly by a consumer of the model-centric software, by the vendor of the software and/or by a third party entity (i.e., an entity other than the vendor or consumer).
Many existing model-centric applications implement some system of machine-friendly identification of model elements, probably due to the inherent characteristic of computational efficiency. For example, in some applications, integers are used to identify model elements such as tables, reports, forms and the like. In recognition of the fact that machine-friendly is often not very friendly to humans, some systems do add an auxiliary textual name for a model element that can be used when referring to model elements, for example, from user interfaces.
When a single party develops an entire application, making sure that each model element has a unique identifier is a somewhat manageable task. However, in situations where multiple mutually independent parties contribute to the model of a given application, ensuring uniqueness becomes a challenge. If integers are used as identifiers, one possible scheme is to centrally allot a series of consecutive numbers to individual contributors, but this requires managerial overhead and can result in real problems when numbers run out. The practical limits imposed by a given identification scheme very well may not be adequate for all applications.
One way to alleviate some of the noted issues is to allow a model to be exported without integer identifiers assigned. Instead, new integer identifiers can be assigned when the model is imported. However, there is risk that significant inconsistencies will be introduced if the renumbering process is triggered at an inopportune time. For example, during an upgrade, renumbering could be a critical mistake if the identifiers are relied upon for updating purposes such as to automatically update definitions of database tables. If, during an upgrade to a new version, tables are assigned integer identifiers that were previously assigned to other existing tables, a loss of business data is possible if not likely. This is but one example of many problems that can arise upon implementation of a renumbering scheme.
Under the circumstances, there is a temptation to use identifiers that are somehow “more” unique than integers, and GUIDs (i.e., identifiers that statistically are unique) are an obvious candidate. A problem with GUIDs; however, is that, by definition, they are meaningless for humans. Thus, if references between model elements are based on GUIDs, it becomes very cumbersome for humans to understand what is being referred to. Also, it becomes generally difficult to fix up broken references when they occur. In addition, GUIDs are less computationally efficient than integers, which makes them less attractive as identifiers.
The discussion above is merely provided for general background information and is not intended for use as an aid in determining the scope of the claimed subject matter.